/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sn.service;

import java.util.List;
import java.util.Set;
import sn.metier.Amitie;
import sn.metier.Personne;

/**
 *
 * @author chenry08
 */
public interface PersonneService {
	
	/**
         * Permet de modifier son pseudo, son avatar et/ou sa présentation
         * @param id identifiant de la personne à modifier
         * @param pseudo nouveau pseudo de la personne
         * @param avatar nouvel avatar de la personne
         * @param email nouvel email de la personne
         * @return la personne avec son profil modifié
         */
	public Personne modifierProfil(Long id, String pseudo, String avatar, String email);
        
        /**
         * Modifie le mot de passe d'un inscrit
         * @param id identifiant de la personne
         * @param ancienPasswd ancien mot de passe pour vérification
         * @param nouveauPasswd nouveau mot de passe
         * @return la personne avec le nouveau mot de passe
         */
        public Personne modifierPasswd(Long id, String ancienPasswd, String nouveauPasswd);

        /**
         * Permet de rechercher une personne à l'aide de son nom dans le réseau social
         * @param nom nom de famille de la personne
         * @return une liste de personne (avec id) correspondant aux critères de recherche
         */
        public List<Personne> chercherAmiParNom(Long idUtilisateur, String nom);

        /**
         * Permet de rechercher une personne à l'aide de son prénom dans le réseau social
         * @param prenom prénom de la personne
         * @return une liste de personne (avec id) correspondant aux critères de recherche
         */
        public List<Personne> chercherAmiParPrenom(Long idUtilisateur, String prenom);

        /**
         * Permet de rechercher une personne à l'aide de son pseudo dans le réseau social
         * @param pseudo pseudo de la personne
         * @return une liste de personne (avec id) correspondant aux critères de recherche
         */
        public List<Personne> chercherAmiParPseudo(Long idUtilisateur, String pseudo);
	
	/**
	 * Permet de récupérer une Personne par son identifiant
	 * @param id identifiant de la personne donnée
	 * @return la personne donnée
	 */
	public Personne voirPersonne(Long id);
	
	/**
	 * Accepter une demande d'amitié
	 * @param noteAmitie une notification d'amitié
	 * @return le nouvel ami
	 */
	public Personne accepterAmi(Long idUtilisateur,Long idAmitie);
	
	/**
	 * Refuser une demande d'amitié
	 * @param noteAmitie une notification d'amitié
	 */
	public void refuserAmi(Long idUtilisateur,Long idAmitie);
	
	/**
	 * Supprimer un ami de sa liste d'amis
	 * @param idami identifiant de l'ami à supprimer
         * @param idpers identifiant de la peronne
	 * @return la personne sans, dans sa liste d'ami, l'ami supprimé
	 */
	public Personne supprimerAmi(Long idami, Long idpers);
}
